import numpy as np  
  
# 假设我们有一个28x28的二维数组（图像）  
image = np.zeros((8, 8), dtype=np.uint8)  
image[:, :4] = 100  
print(image)
# 假设我们有一个3x3的卷积核  
kernel = np.array([[1, 0, -1],  
                    [1, 0, -1],  
                    [1, 0, -1]])  
  
# 我们需要处理边界条件，例如通过填充（padding）或裁剪图像  
# 这里我们简单地使用'valid'卷积（即不填充，并裁剪边缘）  
padded_image = np.pad(image, ((1, 1), (1, 1)), mode='constant', constant_values=0)  

# 初始化输出数组，考虑卷积后的尺寸（对于'valid'卷积，输出尺寸是(N-K+1, N-K+1)）  
output = np.zeros((image.shape[0] - kernel.shape[0] + 1, image.shape[1] - kernel.shape[1] + 1))  
  
# 进行卷积操作  
for i in range(output.shape[0]):  
    for j in range(output.shape[1]):  
        output[i, j] = np.sum(padded_image[i:i+kernel.shape[0], j:j+kernel.shape[1]] * kernel)  
print(np.shape(output))
print(output)



